Ruby 日記 14日目: キーワード引数とdouble splat演算子
#Ruby_日記 #2021-09-08
https://rex.libertyfish.co.jp/exam_histories/42141/user_answers/5ac76ad3-ec3d-4342-8e2c-66df4d1f7a8a
次のコードを実行するとどうなりますか
code:gold/ex14/main.rb
def foo(arg1:100, arg2:200)
puts arg1
puts arg2
end
option = {arg2: 900}
foo arg1: 200, **option
選択肢:
code:sh
200
900
code:sh
900
200
code:sh
100
200
エラーになる
解説:
** はdouble splat演算子って呼ぶらしい
https://docs.ruby-lang.org/ja/latest/doc/news=2f2_7_0.html
option というhashオブジェクトを展開してキーワード引数としてfooメソッドに渡している、という認識(微妙にこの辺の理解がふわふわしているけど)
ので、foo(arg1: 200, arg2: 900) と同じ挙動になるはず。
code:sh
# ruby gold/ex14/main.rb
200
900